package clases;

import clases.ComparadorCedula;
import clases.ComparadorNota;
import clases.Escribir;
import clases.Estudiante;
import clases.Profesor;
import java.util.Collections;
import java.util.Vector;

public class Seccion {
	
	private Profesor profesorseccion;
	private Escribir escribir;
	private Vector<Estudiante> estudiantesseccion;
	private int numeroseccion;
	
	public Seccion() {
		estudiantesseccion = new Vector<Estudiante>();
		escribir = new Escribir();
                profesorseccion=null;
                numeroseccion=-1;
	}

    public Vector<Estudiante> getEstudiantesseccion() {
        return estudiantesseccion;
    }
	
	
	
	public Profesor getProfesorseccion() {
		return profesorseccion;
	}



	public void setProfesorseccion(Profesor profesorseccion) {
		this.profesorseccion = profesorseccion;
	}



	public int getNumeroseccion() {
		return numeroseccion;
	}



	public void setNumeroseccion(int numeroseccion) {
		this.numeroseccion = numeroseccion;
	}


        public boolean  hayEstudiantes(){
            return !estudiantesseccion.isEmpty();
        }


	public boolean  inscribirEstudiante (Estudiante e){
		for (int i = 0; i < estudiantesseccion.size(); i++) {
			if(estudiantesseccion.elementAt(i).getCedula()==e.getCedula()){
				System.out.println("El estudiante se encuentra inscrito");
				return false;
			}
		}
		estudiantesseccion.add(e);
		System.out.println("El estudiante se ha inscrito exitosamente");
                return true;
	}
	
	public Estudiante buscarEstudiante (int cedula){
		for (int i = 0; i < estudiantesseccion.size(); i++) {
			if(estudiantesseccion.elementAt(i).getCedula()==cedula){
				System.out.println("Estudiante encontrado");
				return estudiantesseccion.elementAt(i);
			}
		}
		System.out.println("El estudiante no se encuentra inscrito");
                return null;
	}
	
	public boolean  retirarEstudiante (int cedula){
		for (int i = 0; i < estudiantesseccion.size(); i++) {
			if(estudiantesseccion.elementAt(i).getCedula()==cedula){
				estudiantesseccion.remove(i);
				System.out.println("Estudiante retirado");
				return true;
			}
		}
		System.out.println("El estudiante no se encuentra inscrito");		
                return false;
        }
	
	public void aplicarEvaluacion(){
		for (int i = 0; i < estudiantesseccion.size(); i++) 
			estudiantesseccion.elementAt(i).presentarEvaluacion();
		profesorseccion.evaluarEstudiante(estudiantesseccion);
		
		System.out.println("Estudiantes evaluados exitosamente");	
		
	}
	
	public Vector<Estudiante> listadoporCedula(){
		escribir.crearFlujo("listaCedula.txt");
		Collections.sort(estudiantesseccion, new ComparadorCedula());
		escribir.escribirMensaje("Listado de estudiantes por cedula");
		for (int i = 0; i < estudiantesseccion.size(); i++){
			escribir.escribirMensaje(estudiantesseccion.elementAt(i).getCedula()+" "+estudiantesseccion.elementAt(i).getNombre()+" "+estudiantesseccion.elementAt(i).getApellido());
		}
		escribir.cerrarFlujo();
                return estudiantesseccion;
	}
	
	public Vector<Estudiante> listadoporNota(){
		escribir.crearFlujo("listaNota.txt");
		Collections.sort(estudiantesseccion, new ComparadorNota());
		escribir.escribirMensaje("Listado de estudiantes por nota final");
		for (int i = 0; i < estudiantesseccion.size(); i++){
			escribir.escribirMensaje(estudiantesseccion.elementAt(i).getCedula()+" "+estudiantesseccion.elementAt(i).getNombre()+" "+estudiantesseccion.elementAt(i).getApellido()+" Nota Final: "+estudiantesseccion.elementAt(i).getNotafinal());
		}
		escribir.cerrarFlujo();
                return estudiantesseccion;
	}
	
	public Vector<Estudiante> listadoAprobados(){
		escribir.crearFlujo("listaAprobado.txt");
		Vector<Estudiante> v = new Vector<Estudiante>();
		for (int i = 0; i < estudiantesseccion.size(); i++) 
			if(estudiantesseccion.elementAt(i).getEstado().equals("Aprobado"))
				v.add(estudiantesseccion.elementAt(i));
		escribir.escribirMensaje("Listado de estudiantes aprobados");
		for (int i = 0; i < v.size(); i++){
			escribir.escribirMensaje(v.elementAt(i).getCedula()+" "+v.elementAt(i).getNombre()+" "+v.elementAt(i).getApellido()+" Nota Final: "+v.elementAt(i).getNotafinal());
		}
		escribir.cerrarFlujo();
                return v;
	}
	
	public Vector<Estudiante> listadoReprobados(){
		escribir.crearFlujo("listaReprobado.txt");
		Vector<Estudiante> v = new Vector<Estudiante>();
		for (int i = 0; i < estudiantesseccion.size(); i++) 
			if(!estudiantesseccion.elementAt(i).getEstado().equals("Aprobado"))
				v.add(estudiantesseccion.elementAt(i));
		escribir.escribirMensaje("Listado de estudiantes reprobados");
		for (int i = 0; i < v.size(); i++){
			escribir.escribirMensaje(v.elementAt(i).getCedula()+" "+v.elementAt(i).getNombre()+" "+v.elementAt(i).getApellido()+" Nota Final: "+v.elementAt(i).getNotafinal());
		}
		escribir.cerrarFlujo();
                return v;
        }
	
	public float mostrarPromedio(){
		int acum =0;
		int cont =0;
		System.out.println("Listado de estudiantes por nota final");
		for (int i = 0; i < estudiantesseccion.size(); i++){
			cont++;
			acum+=estudiantesseccion.elementAt(i).getNotafinal();
		}
		System.out.println("El promedio de notas es: "+(acum/cont));
                return (acum/cont);
        }
	
	
	

}
